Some aftermath of the fix of bug #543868. Clip and flip to the source, not
authorRichard Hult <richard@imendio.com>
Fri, 15 Aug 2008 20:27:22 +0000 (20:27 +0000)
committerRichard Hult <rhult@src.gnome.org>
Fri, 15 Aug 2008 20:27:22 +0000 (20:27 +0000)
2008-08-15  Richard Hult  <richard@imendio.com>

* gdk/quartz/gdkdrawable-quartz.c (gdk_quartz_draw_drawable): Some
aftermath of the fix of bug #543868. Clip and flip to the source,
not the destination. Don't save/restore the gstate, it's already
done when getting/releasing the context.

svn path=/trunk/; revision=21136

ChangeLog
gdk/quartz/gdkdrawable-quartz.c

index 82ef9c824af5065bd4c50c3979f7b3e8f392ff56..0cfbce4ee56c31d6b9d99bc66d2c959ab77ca067 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-15  Richard Hult  <richard@imendio.com>
+
+       * gdk/quartz/gdkdrawable-quartz.c (gdk_quartz_draw_drawable): Some
+       aftermath of the fix of bug #543868. Clip and flip to the source,
+       not the destination. Don't save/restore the gstate, it's already
+       done when getting/releasing the context.
+
 2008-08-15  Richard Hult  <richard@imendio.com>
 
        * gtk/gtkclipboard-quartz.c (gtk_clipboard_wait_is_uris_available):
index ec0cf6c74622288244cb0290f67ce56afc49e175..9ad9c66d2e7e70f63b8b04cd6d2c6c0723c5d236 100644 (file)
@@ -337,7 +337,6 @@ gdk_quartz_draw_drawable (GdkDrawable *drawable,
   else if (dest_depth != 0 && src_depth == dest_depth)
     {
       CGContextRef context = gdk_quartz_drawable_get_context (drawable, FALSE);
-      gint width, height;
 
       if (!context)
        return;
@@ -345,23 +344,17 @@ gdk_quartz_draw_drawable (GdkDrawable *drawable,
       _gdk_quartz_gc_update_cg_context (gc, drawable, context,
                                        GDK_QUARTZ_CONTEXT_STROKE);
 
-      CGContextSaveGState (context);
-
-      /* convert coordinates from gtk+ to core graphics */
-      gdk_drawable_get_size (drawable, &width, &height);
-      CGContextTranslateCTM (context, 0, height);
+      CGContextClipToRect (context, CGRectMake (xdest, ydest, width, height));
+      CGContextTranslateCTM (context, xdest - xsrc, ydest - ysrc +
+                             GDK_PIXMAP_IMPL_QUARTZ (src_impl)->height);
       CGContextScaleCTM (context, 1.0, -1.0);
 
-      CGContextClipToRect (context, CGRectMake (xdest, ydest, width, height));
-      CGContextTranslateCTM (context, xdest - xsrc, ydest - ysrc);
       CGContextDrawImage (context, 
                          CGRectMake(0, 0, 
                                     GDK_PIXMAP_IMPL_QUARTZ (src_impl)->width, 
                                     GDK_PIXMAP_IMPL_QUARTZ (src_impl)->height), 
                          GDK_PIXMAP_IMPL_QUARTZ (src_impl)->image);
 
-      CGContextRestoreGState (context);
-
       gdk_quartz_drawable_release_context (drawable, context);
     }
   else